package com.ruoyi.shopping.service;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.adapayRefund.domain.AdapayRefund;
import com.ruoyi.shopping.domain.MallOrder;

/**
 * 商城订单Service接口
 *
 * @author ruoyi
 * @date 2022-06-09
 */
public interface IMallOrderService
{
    /**
     * 查询商城订单
     *
     * @param id 商城订单主键
     * @return 商城订单
     */
    public MallOrder selectMallOrderById(Long id);

    /**
     * 查询商城订单列表
     *
     * @param mallOrder 商城订单
     * @return 商城订单集合
     */
    public List<MallOrder> selectMallOrderList(MallOrder mallOrder);

    /**
     * 新增商城订单
     *
     * @param mallOrder 商城订单
     * @return 结果
     */
    public int insertMallOrder(MallOrder mallOrder);

    /**
     * 修改商城订单
     *
     * @param mallOrder 商城订单
     * @return 结果
     */
    public int updateMallOrder(MallOrder mallOrder);

    /**
     * 批量删除商城订单
     *
     * @param ids 需要删除的商城订单主键集合
     * @return 结果
     */
    public int deleteMallOrderByIds(Long[] ids);

    /**
     * 批量逻辑删除商城订单
     *
     * @param ids 需要删除的商城订单主键集合
     * @return 结果
     */
    public int logicDeleteMallOrder(Long[] ids, String delType, Long delUser);
    /**
     * 删除商城订单信息
     *
     * @param id 商城订单主键
     * @return 结果
     */
    public int deleteMallOrderById(Long id);

    void insrAll(ArrayList<MallOrder> needInsr);

    MallOrder selectByOrderId(String verifyCode);

    List<MallOrder> selectMallOrderByMeshId(Long id);
    /**
     * 查询商城售后订单订单列表
     */
    public List<MallOrder> selectAfterSaleOrderList(MallOrder mallOrder);

    /**
     查询订单状态不是已发货和已收货的信息
     */
    public List<MallOrder> selectOrderList(MallOrder mallOrder);

    List<MallOrder> selectNeedAutoConfirm(Integer day);

    List<MallOrder> selectNeedFinished(Integer day);

    AdapayRefund refundPay(Long id);

    void refund(MallOrder order, AdapayRefund adapayRefund);

    void checkFinished(Long meshId);
}
